#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;


struct edge{
	int start,stop,length,next;
};


int main(){
	int n,m;
	cin>>n>>m;
	edge e[2*m];
	int eh[n];
	memset(eh,-1,sizeof(eh));
	
	int dis[n][n];
	memset(dis,-1,sizeof(dis));
	int sum[n][n];
	memset(sum,0,sizeof(sum));
	
	for(int i=0;i<m;i++){
		int s,t,l;
		cin>>s>>t>>l;
		s--;
		t--;
		
		dis[s][t] = dis[s][t]==-1?l:min(dis[s][t],l);
		dis[t][s] = dis[s][t];
		sum[s][t]++;
		sum[t][s]++;
	}
	
	
	
	for(int k=0;k<n;k++){
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				if(i == j  ||  i == k  ||  j == k)
					continue;
				if(dis[i][k] < 0  ||  dis[k][j] < 0)
					continue;
				if(dis[i][k]+dis[k][j] < dis[i][j]  ||  dis[i][j] < 0){
					dis[i][j] = dis[i][k]+dis[k][j];
					sum[i][j] = sum[i][k]*sum[k][j];
				}
				else if(dis[i][k]+dis[k][j] == dis[i][j])
					sum[i][j] += sum[i][k]*sum[k][j];
//				if(sum[i][j] == 2)
//					cout<<k<<" "<<i<<" "<<j<<endl;
			}
		}
	}
//	for(int i=0;i<n;i++){
//		for(int j=0;j<n;j++)
//			cout<<sum[i][j]<<" ";
//		cout<<endl;
//	}
	
	for(int k=0;k<n;k++){
		double ans=0;
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				if(i == j  ||  j == k  ||  k == i)
					continue;
				if(dis[i][k]+dis[k][j] > dis[i][j])
					continue;
				if(sum[i][j] == 0)
					continue;
				ans += (double)(1.0*sum[i][k]*sum[k][j])/sum[i][j];
			}
		}
		printf("%.3f\n",ans);
	}
	return 0;
}
